2.Python3数据结构

1.python3基本数据结构

1.1 数字类型

  • 数字类型(number)分为布尔、整数、浮点数和复数。

  • 布尔类型(bool)为True(1)和False(0)的组合。

bool1=True
bool2=False

注意:在Python2中是没有布尔型的,它用数字0表示False,用1表示True。到Python3中,把True和False定义成关键字了,但它们的值还是1和0,它们可以和数字相加。

  • 整数类型(int)为整数
int=20
  • 浮点数类型(float)为浮点数。
float=2.2
  • 复数类型(complex)为复数,复数的实部a和虚部b都是浮点型
complex=1+4j

1.2 数字类型的方法

  • 运算
# 数字类型运算
a = 1
b = 3
print(a + b)#加法
print(a - b)#减法
print(a / b)#除法
print(a * b)#乘法
print(a // b)#整除
print(a % b)#求余
print(a ** b)#乘方

输出为:

4
-2
0.3333333333333333
3
0
1
1

在混合计算时,Python会把整型转换成为浮点数。 例如:

a=1.0
b=2
print(a+b)

结果就是3.0了。

2.python3容器

  • python的容器分为序列、映射以及集合。

2.1序列

  • 序列(sequence)中的每个元素都有自己的编号。序列包括列表、元组、字符串等。

2.1.1 列表和元组

  • 列表和元组都是一种类似的序列,区别列表可以修改,元组不能修改。
  • 列表(list),使用[,]建立列表
list1=['hello','world']
  • 元组(tuple),使用(,)建立元组,只含一个值的元组,必须加个逗号(,);
t1=(1,2)
t2=1,2,3
t3=(1,)

2.1.2 字符串

  • Python中的字符串用单引号(')、双引号(")或三引号(三个单引号''')括起来。而单双引号是为了去掉转义字符\的。字符串不能被改变,即不能向字符串某位赋值。
#这种情况下是一样的
a='str'
b="str"
c='''str'''
  • 单引号
# 这种情况下不需要转义字符\
a='我"们"这个'
  • 双引号
# 这种情况下不需要转义字符\
a="let's go"
  • 三引号
# 这种情况下不需要转义字符\
a='''我们"这"'个' '''
# 这种情况下保留换行
a='''我
     换
     行
     了'''

2.1.2.1 字符串方法

  • 字符串不发生转义,使用r表示原始字符串
str="run\ner"
#这样会输出run
#          er
str=r"run\ner"
#这样会输出run\ner
  • 格式化
    1.字符串格式化使用字符串格式化操作符即百分号%来实现。
str1='Hello,%s' % 'world.'

2.格式化操作符的右操作数可以是任何东西,如果是元组,则如下:

strs=('Hello','world') #元组
str1='%s,%s' % strs

3.对数字进行格式化处理,通常需要控制输出的宽度和精度:

str1='%.2f' % 3.1415926 #精度2
str1='%10f' % 3.1415926 #字段宽10

2.1.3 序列通用方法

  • 索引
    索引值以 0 为开始值,-1 为从末尾的开始位置。
str1='Hello'
nums=[1,2,3,4]
t1=(123,234,345)
print(str1[0])
print(nums[1])
print(t1[2])

输出为:

H
2
345
  • 分片
    分片操作用来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现。
nums='1234567890'
print(nums)
print(nums[1:5])
print(nums[1:])
print(nums[-3:-1])
print(nums[-3:]) 
print(nums[:]) #复制整个序列

输出为:

1234567890
2345
234567890
89
890
1234567890

默认步长为1,可以对步长进行调节。

print(nums)
print(nums[0:10])  # 默认步长为1 等价于nums[1:5:1]
print(nums[0:10:2])  # 步长为2
print(nums[0:10:3])  # 步长为3
print(nums[0:10:0])  #步长为0
print(nums[-3:-1:-1])  # 步长为-2

输出为:

1234567890
1234567890
13579
1470
  • 序列相加
    序列相加只能相同类型的序列进行相加。
str1='Hello'
str2='world'
print(str1+str2)
lista=[1,2]
listb=[3,4]
print(lista+listb)

输出为:

Helloworld
[1, 2, 3, 4]
  • 乘法
    使用*符号对序列进行叠加。
str1='Hello'
print(str1*2)

输出为:

HelloHello
  • 成员资格
    in运算符会用来检查一个对象是否为某个序列(或者其他类型)的成员(即元素):
str1='Hello'
print 'H' in str1 
print 'h' in str1 

输出为:

True
False
  • 长度、最小最大值
    通过内建函数len、max和min可以返回序列中所包含元素的数量、最大和最小元素。
str1='Hello'
print len(str1) 
print max(str1)
print min(str1)

输出为:

5
o
H

2.2 字典

  • 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
    键(key)必须使用不可变类型,即数字、字符串、元组。
    在同一个字典中,键(key)必须是唯一的。
    代码如下:
a={}
a[1]=1
a['a']='a'
a[(1,2)]=1
a[2]=set([1,2])
print(a)
b={'2':'a',3:3}
print(b)

输出为:

{(1, 2): 1, 1: 1, 2: {1, 2}, 'a': 'a'}
{3:3,'2':'a'}

2.3 集合

  • 集合(set)是一个无序不重复元素的序列。
    会自动删除重复元素。
    代码如下:
seta=set([1,2,3])
setb={2,3}
print(seta,setb)

输出为:

{1, 2, 3} {2, 3}

2.3.1 集合方法

a={1,2,3}
b={2,3,4}
print(a - b)     # a和b的差集
print(a | b)     # a和b的并集
print(a & b)     # a和b的交集
print(a ^ b)     # a和b中不同时存在的元素

输出为:

{1}
{1, 2, 3, 4}
{2, 3}
{1, 4}

3.总结

  • 总结速查表格
类型 子类型 构建方式 表达含义
数字类型 bool布尔类型 True False 判定True、False
数字类型 int类型 a=2 整数
数字类型 float a=2.0 浮点数
数字类型 complex a=1+2j 复数
容器-序列 列表list a=[1,2] 可变的序列
容器-序列 元组tuple a=(1,2) 不可变的序列
容器-序列 字符串string a='abcd' 方便使用的序列
容器-字典 字典类型dict a={'1':'a'} 主键唯一的键值对
容器-集合 集合类型set a=set([a,b])或a={a,b} 元素不重复的集合
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的数据结构(也称为容器)。 序列(列表、元组和字符...
    又见倾心阅读 228评论 0 0
  • 01-常量与变量 学习swift第一步打印Hello World print("Hello World") swi...
    iOS_恒仔阅读 4,986评论 2 19
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,484评论 1 118
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,865评论 0 3
  • 今天一早忙活公司的报价,后听了益生菌的课件、峰姐点评迈向富足 下午见了个以前的邻居,她现在在做微商,刚开始还是很兴...
    唐豆阅读 116评论 0 0